#Boa:Dialog:Transaccion

import wx
from wx.lib.anchors import LayoutAnchors
import wx.grid
import consultasBD
import NoCodBarrasEncontrado
import DeseaSalir
import utiles
import sincronizar_tabla  
import Vista
import SeleccionarSucursal

def create(parent):
    return Transaccion(parent)

[wxID_TRANSACCION, wxID_TRANSACCIONFECHATRANSFERENCIA, wxID_TRANSACCIONGRID1, 
 wxID_TRANSACCIONGRID2, wxID_TRANSACCIONGUARDATRANS, 
 wxID_TRANSACCIONINCANTPRODUCTOS, wxID_TRANSACCIONINDESNOMBRESUC, 
 wxID_TRANSACCIONINIDDESSUC, wxID_TRANSACCIONINIDSUCURSAL, 
 wxID_TRANSACCIONINNOMBRESUCURSAL, wxID_TRANSACCIONSTATICTEXT1, 
 wxID_TRANSACCIONSTATICTEXT2, wxID_TRANSACCIONSTATICTEXT3, 
 wxID_TRANSACCIONSTATICTEXT4, wxID_TRANSACCIONSTATICTEXT5, 
 wxID_TRANSACCIONSTATICTEXT6, 
] = [wx.NewId() for _init_ctrls in range(16)]

class Transaccion(wx.Dialog):
    columnas =['Codigo','Descripcion','Talle','Color','Cant.','P. Venta', 'Stock']
    modificables = [0]

    cod_dict = {}
    
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_TRANSACCION, name='', parent=prnt,
              pos=wx.Point(317, 49), size=wx.Size(600, 562),
              style=wx.DEFAULT_DIALOG_STYLE, title=u'Transacci\xf3n')
        self.SetClientSize(wx.Size(592, 535))
        self.Show(True)

        self.staticText1 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT1,
              label='Origen:', name='staticText1', parent=self, pos=wx.Point(8,
              8), size=wx.Size(37, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT2,
              label='Destino:', name='staticText2', parent=self, pos=wx.Point(8,
              32), size=wx.Size(41, 13), style=0)

        self.fechatransferencia = wx.DatePickerCtrl(id=wxID_TRANSACCIONFECHATRANSFERENCIA,
              name='fechatransferencia', parent=self, pos=wx.Point(394, 29),
              size=wx.Size(96, 21), style=wx.DP_SHOWCENTURY)
        self.fechatransferencia.Enable(False)

        self.staticText3 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT3,
              label=u'Fecha:', name='staticText3', parent=self,
              pos=wx.Point(352, 32), size=wx.Size(33, 13), style=0)

        self.grid1 = wx.grid.Grid(id=wxID_TRANSACCIONGRID1, name='grid1',
              parent=self, pos=wx.Point(8, 64), size=wx.Size(560, 272),
              style=0)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnGrid1CAMBIACELDa)

        self.guardatrans = wx.Button(id=wxID_TRANSACCIONGUARDATRANS,
              label=u'GUARDAR Y TRANSMITIR', name='guardatrans', parent=self,
              pos=wx.Point(432, 496), size=wx.Size(146, 32), style=0)
        self.guardatrans.Bind(wx.EVT_BUTTON, self.OnGuardatransButton,
              id=wxID_TRANSACCIONGUARDATRANS)

        self.staticText4 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT4,
              label='Cant. Productos:', name='staticText4', parent=self,
              pos=wx.Point(384, 360), size=wx.Size(83, 13), style=0)

        self.incantProductos = wx.TextCtrl(id=wxID_TRANSACCIONINCANTPRODUCTOS,
              name='incantProductos', parent=self, pos=wx.Point(472, 360),
              size=wx.Size(100, 21), style=0, value='0')
        self.incantProductos.SetEditable(False)

        self.inidsucursal = wx.TextCtrl(id=wxID_TRANSACCIONINIDSUCURSAL,
              name='inidsucursal', parent=self, pos=wx.Point(56, 8),
              size=wx.Size(24, 21), style=0, value='')
        self.inidsucursal.SetEditable(False)

        self.innombresucursal = wx.TextCtrl(id=wxID_TRANSACCIONINNOMBRESUCURSAL,
              name='innombresucursal', parent=self, pos=wx.Point(80, 8),
              size=wx.Size(184, 21), style=0, value='')
        self.innombresucursal.SetEditable(False)

        self.iniddesSuc = wx.TextCtrl(id=wxID_TRANSACCIONINIDDESSUC,
              name='iniddesSuc', parent=self, pos=wx.Point(56, 32),
              size=wx.Size(24, 21), style=0, value='')
        self.iniddesSuc.SetEditable(False)

        self.indesnombresuc = wx.TextCtrl(id=wxID_TRANSACCIONINDESNOMBRESUC,
              name='indesnombresuc', parent=self, pos=wx.Point(80, 32),
              size=wx.Size(184, 21), style=0, value='')
        self.indesnombresuc.SetEditable(False)

        self.grid2 = wx.grid.Grid(id=wxID_TRANSACCIONGRID2, name='grid2',
              parent=self, pos=wx.Point(16, 382), size=wx.Size(408, 144),
              style=0)

        self.staticText5 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT5,
              label='Productos pendientes:', name='staticText5', parent=self,
              pos=wx.Point(8, 344), size=wx.Size(109, 13), style=0)

        self.staticText6 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT6,
              label='Se descontaran automaticamente si se cargan en la grilla de arriba:',
              name='staticText6', parent=self, pos=wx.Point(8, 360),
              size=wx.Size(323, 13), style=0)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.padre = parent
        self.sucursal = self.padre.sucursalNro        
        self.grillafactura()        
        self.actualizaCombos()
        self.pedidosGrilla()
        
    def pedidosGrilla(self):
        self.sucursalNro, self.nombreSuc = self.padre._sucursal_activa()
        sql= "SELECT * FROM pedidos p JOIN producto_talle_color ptc ON (ptc.id = p.ptc) JOIN productos pro ON (pro.codsussan = ptc.codsussan)  WHERE estado = '1' AND idsucdestino = '%s'" % str(self.sucursalNro)
        resultados =consultasBD.ordenCrudaDict(sql)
        
        self.cant_pedidos = len(resultados)
        columnas = ["Cod. Pedido", "PTC", "Descrip.", "Rest", "Cant", "Fecha Pedido"]
        
        #self.grid2.CreateGrid(self.cant_pedidos,len(columnas))
        self.grid2.CreateGrid(200,len(columnas))
        for j, col in enumerate(columnas): 
            self.grid2.SetColLabelValue(j, col)
            self.grid2.AutoSizeColumn(j, True) 
            for i in range(self.cant_pedidos):
                self.grid2.SetReadOnly(i,j,True)       
        
        for i, fil in enumerate(resultados):
            self.grid2.SetCellValue(i,0,str(fil['idpedido']))
            self.grid2.SetCellValue(i,1,str(fil['ptc']))
            self.grid2.SetCellValue(i,2,str(fil['descri']))
            self.grid2.SetCellValue(i,3,str(fil['cant']))
            self.grid2.SetCellValue(i,4,str(fil['cant']))
            self.grid2.SetCellValue(i,5,str(fil['fechapedido']))               
        
    def BuscaNroTrans(self):
        condicionSQL = "sucursal='"+str(self.padre.sucursalNro)+"'"
        resultado = consultasBD.executaSQL(self,'ultimonrotransferencia','parametros',condicionSQL)
        for r in resultado:
            ultimoidtrans = r[0]
        print ultimoidtrans
        self.idtrans = int(ultimoidtrans[2:]) + 1
        print self.idtrans
        self.armonuevo = str(self.padre.sucursalNro)+"-"+str(self.idtrans)
        self.nrotransferencia.ChangeValue(str(self.armonuevo))
        
        
    def actualizaCombos(self):
        #aca tengo que rellenar segun la sucursal en la que me encuentro, el ORIGEN        
        self.sucursalNro, self.nombreSuc = self.padre._sucursal_activa()
        ventana = SeleccionarSucursal.Dialog1(self)
        try:
            ventana.ShowModal()
            eleccion = ventana.eleccion
            nrosucursalelegida = ventana.getEleccion()[0]
        finally:
            ventana.Destroy()

        self.iniddesSuc.ChangeValue(nrosucursalelegida)
#        if self.sucursalNro==1:
#            self.iniddesSuc.ChangeValue("2")
#        else:
#            self.iniddesSuc.ChangeValue("1")
        
        
        SQL = "Select nombre from sucursales where idsucursal="+str(self.iniddesSuc.Value)
        dato = consultasBD.ordenCrudaResultDict(SQL)
        
        self.indesnombresuc.ChangeValue(str(dato["nombre"]))
        
        
        self.innombresucursal.ChangeValue(str(self.nombreSuc))
        self.inidsucursal.ChangeValue(str(self.sucursalNro))
        
        #tiene los datos para la transaccion self.inidsucursal y self.iniddesSuc
        
    def grillafactura(self):
        '''Inicializa la Grilla'''        
        self.grid1.CreateGrid(200,len(self.columnas))                      
        for i, col in enumerate(self.columnas): 
            self.grid1.SetColLabelValue(i, col)
            
        self.grid1.AutoSizeColumn(0,True)
        self.grid1.AutoSizeRow(0,True)
        self.grid1.AutoSizeColumn(2,True)
        self.grid1.AutoSizeColumn(3,True)
        self.grid1.AutoSizeColumn(4,True)
        self.grid1.AutoSizeColumn(5,True)
        
        #self.grid1.SetRowLabelValue(10,"TOTALES")
        self.grid1.SetColSize(0,95)
        self.grid1.SetColSize(1,120)
        self.grid1.DisableDragColSize()
        self.total = "" 
        
        #para hacer que solo sean posible la modif. de algunas columnas
        for x in xrange(len(self.columnas)):
            for i in xrange(len(self.columnas)):
                if i not in self.modificables:
                    self.grid1.SetReadOnly(x,i,True)
        #fin configuracion grilla facturacion
        
        self.cantidad = 0
        self.sale = 0 #respuesta de la ventana de posible salida

       
    def _borrar_fila(self, fila):           
        '''Borra todos los valores de una fila dada'''
        for x in xrange(len(self.columnas)):
            self.grid1.SetCellValue(fila, x, "")
			
        self.recuenta()
        
        self.grid1.ForceRefresh()
        
    def _mostrar_ptc_en_grilla(self, fila, resultado, stock):
        '''Dado un ptc y su stock se muestra en una fila de la grilla'''
        self.grid1.SetCellValue(fila, 0, str(resultado['ptc'])) #descri
        self.grid1.SetCellValue(fila, 1, str(resultado['descri'])) #descri
        self.grid1.SetCellValue(fila, 2, resultado['talle']) #talle
        self.grid1.SetCellValue(fila, 3, resultado['color']) #color
        self.grid1.SetCellValue(fila, 4, "1") #cantidad
        self.grid1.SetCellValue(fila, 5, str(resultado['preciolt1'])) #P. VENTA
        self.grid1.SetCellValue(fila, 6, str(stock)) #P. VENTA

    def _incrementar_1_cantidad(self, fila):
        '''Dada una fila se incrementa en 1 la cantidad'''
        stock = int(self.grid1.GetCellValue(fila,6))        
        cantidad = int(self.grid1.GetCellValue(fila,4)) + 1
        if cantidad > stock:
            utiles.mensaje(self, "La cantidad no puede ser mayor al stock del producto")
            return        
        
        self.grid1.SetCellValue(fila, 4, str(cantidad))
        
    def _fila_codigo_repetido(self, filas, codigo):
        print filas
        print codigo
        '''Retorna el nro de fila que tiene como codproducto a codigo y no es la fila actual'''
        try:
            filas[0]
        except:
            filas = [filas]
        
        for x in xrange(self.grid1.GetNumberRows()):
            if x in filas:
                continue

            if self.grid1.GetCellValue(x,0) == str(codigo):
                return x            
        return None
        
    def _stock(self, codigo):
        '''Obtiene el stock de un producto'''
        sql = "SELECT * FROM stock WHERE ptc = '%s' AND sucursal = '%s'" % (codigo, self.sucursal)
        resultado = consultasBD.ordenCrudaResultDict(sql)
        if len(resultado) == 0:
            return 0
        
        return resultado['stock']
    
    def _cambio_cantidad(self, fila, columna):
        '''Manejador de los cambios en la cantidad'''
        if self.grid1.GetCellValue(fila,0) == "": 
            return

        stock = self.grid1.GetCellValue(fila,6)
        print self.grid1.GetCellValue(fila,4), stock
        if int(self.grid1.GetCellValue(fila,4)) > int(stock):
            utiles.mensaje(self, "La cantidad no puede ser mayor al stock del producto")
            self.grid1.SetCellValue(fila, 4, "1")
            return
        
        # esto cambiando la cantidad y hay un codigo cargado
        self.recuenta() #cuenta los totales
        self.grid1.ForceRefresh()        
    
    def _sumar_pedidos(self, ptc, cant):
        '''Comprueba si hay pedidos con el ptc y los vuelve a dejar como pendientes'''
        for i in range(int(cant)):
            for fila in range(self.cant_pedidos):
                restantes = int(self.grid2.GetCellValue(fila,3))
                cantidad = int(self.grid2.GetCellValue(fila,4))
                
                ptc_grid = self.grid2.GetCellValue(fila,1)
                if ptc != ptc_grid or restantes == cantidad:
                    continue
                                
                self.grid2.SetCellValue(fila,3, str(restantes + 1))             
                utiles.colorear_fila(self.grid2, fila, utiles.BLANCO)                                    
                break
        
    def _borrar_pedidos(self, ptc):
        for fila in range(self.cant_pedidos):
            if ptc != self.grid2.GetCellValue(fila,1) or self.grid2.GetCellValue(fila,3) == "0":
                continue
            
            restantes = int(self.grid2.GetCellValue(fila,3)                  )
            self.grid2.SetCellValue(fila,3, str(restantes - 1))
            
            if restantes == 1:
                utiles.colorear_fila(self.grid2, fila, utiles.VERDE)                                    
            return
            
    def _cambio_codigo(self, fila, columna):      
        '''Manejador de los cambios en la de codigo de producto'''
        ptc = self.grid1.GetCellValue(fila, 0)        
        cant = self.grid1.GetCellValue(fila, 4)
        
        #borra
        if ptc == "":  
            print "PTC2", self.cod_dict[fila]          
            self._sumar_pedidos(self.cod_dict[fila], cant)
            self._borrar_fila(fila)            
            return    
        
        #self.grid1.SetGridCursor(fila + 1, 0)        
        
        
        #busca el ptc por el cod. de barras
        if ptc != "":                                                   
            sql = "SELECT *, ptc.id as ptc FROM productos p JOIN producto_talle_color ptc ON(p.codsussan = ptc.codsussan) WHERE ptc.id = '%s'" % ptc
            resultado = consultasBD.ordenCrudaResultDict(sql)
            
            #Si existe el ptc (producto talle color)
            if len(resultado) <= 0 :
                utiles.mensaje(self, "Codigo de producto No Encontrado")
                return
                
            stock = self._stock(ptc)
            if stock == 0:
              utiles.mensaje(self, "El producto no tiene stock")                    
              self._borrar_fila(fila)
              return
            
            
            self._borrar_pedidos(ptc)
            fila_codigo_repetido = self._fila_codigo_repetido(fila, resultado['id'])
            if fila_codigo_repetido != None:
                #Esta repetido
                self._incrementar_1_cantidad(fila_codigo_repetido)
                self._borrar_fila(fila)                           
            else:
                self._mostrar_ptc_en_grilla(fila, resultado, stock)
                self.cod_dict[fila] = ptc
                    
            self.recuenta()
                  
                        
    def OnGrid1CAMBIACELDa(self, event):
        #detecta un cambio en la grilla
        #la tabla producto:
        
        columna = self.grid1.GetGridCursorCol()
        fila    = self.grid1.GetGridCursorRow()
             
        if columna == 4:
            self._cambio_cantidad(fila, columna)
                        
        if columna == 0:
            self._cambio_codigo(fila, columna)
        
   
    def EmpezoACargar(self):
        '''Verifica si hay algo cargado en la grilla'''
        for r in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(r,1) != "":
                return True    
        return False                                
    
    def recuenta(self):
        '''Calcula el total de items y lo actualiza en la pantalla'''
        self.cantidad = 0
        for r in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(r,1) == "":
                continue
            
            v = int(self.grid1.GetCellValue(r,4))
            self.cantidad += v
                
        self.incantProductos.ChangeValue(str(self.cantidad))
        self.Refresh()

    def _verificar_stock(self):
        return True
        
        '''Verifica que no se exceda el stock de ningun producto'''
        for x in range(self.grid1.GetNumberRows()):
            codigo   = self.grid1.GetCellValue(x,0)
            cantidad = self.grid1.GetCellValue(x,4)
            
            if codigo == "":
                continue
            
            sql = "SELECT * FROM stock WHERE sucursal = '%s' AND ptc=%s AND stock >= '%s'" % (self.sucursal, codigo, cantidad)
            resultado = consultasBD.ordenCrudaResultDict(sql)
            if len(resultado) == 0:
                utiles.mensaje(self, "Hay productos sin stock suficiente en la sucursal de origen")
                return False
            
        return True
            
    def _crear_transferencia(self):
        '''Se crea la transferencia en la DB y devuelve su ID'''
        id = utiles.secuencia("transferencias", self.sucursal)
        idsucorigen = self.inidsucursal.Value
        idsucdestino = self.iniddesSuc.Value
        estado = 1
        transferido = 0
        recibido = 0
        auditoria = "Aca va el usuario" 
        fecha = utiles.getfechaInverseTime()
        
        sql = "INSERT INTO transferencias (id, idsucorigen, idsucdestino, estado, auditoria, fecha) VALUES('%s', '%s', '%s', '%s', '%s', '%s')" % (id, idsucorigen, idsucdestino, estado, auditoria, fecha)        
        sincronizar_tabla.addChange(sql=sql)
        consultasBD.executaSinCommit(None, sql)  
        return id   
    
    def _agregar_items(self, idtransferencia):
        '''Crea los items de una transferencia en la DB'''     
        for x in xrange(self.grid1.GetNumberRows()):
            if (self.grid1.GetCellValue(x,1) == ""):
                continue
            
            id   = utiles.secuencia("transferenciastieneproductos", self.sucursal)
            ptc  = self.grid1.GetCellValue(x,0)
            cant = self.grid1.GetCellValue(x,4)
            sql = "INSERT INTO transferenciastieneproductos (id, idtransferencia, ptc, cant) VALUES('%s', '%s', '%s', '%s')" % (id, idtransferencia, ptc, cant)
            sincronizar_tabla.addChange(sql=sql)
            consultasBD.executaSinCommit(None, sql)        
            
    def _descontar_stock(self, idtransferencia):
        '''Quita de el stock de las cant transferidas por cada producto'''     
        for x in xrange(self.grid1.GetNumberRows()):
            if (self.grid1.GetCellValue(x,1) == ""):
                continue
                
            ptc  = self.grid1.GetCellValue(x,0)
            cant = int(self.grid1.GetCellValue(x,4))
            stock = utiles.stock_sumado(ptc, self.sucursal, -cant)
            sql = "UPDATE stock SET stock = '%s' WHERE ptc = '%s' AND sucursal = '%s'" % (stock, ptc, self.sucursal)
            
            utiles.agregar_movimiento(ptc, stock_previo=stock + cant, stock_nuevo=stock, operacion='envio', idtransferencia = idtransferencia, sucursal=self.sucursal)
            
            sincronizar_tabla.addChange(sql=sql)
            consultasBD.executaSinCommit(None, sql)
    
    def _actualizar_pedidos(self):
        for fila in range(self.cant_pedidos):
            idpedido  = self.grid2.GetCellValue(fila,0)
            restantes = int(self.grid2.GetCellValue(fila,3))
            cantidad  = int(self.grid2.GetCellValue(fila,4))
            
            if cantidad == restantes:
                continue
            
            sql_estado = ""
            if restantes == 0:
                sql_estado = ",estado='0'"
            
            sql = "UPDATE pedidos SET cant = '%s' %s WHERE idpedido = '%s'" % (restantes, sql_estado, idpedido)
            print sql
            consultasBD.executaSinCommit(None, sql)
            sincronizar_tabla.addChange(sql=sql)
            
    def __guardar(self):
            self.idtransferencia = self._crear_transferencia()
            self._agregar_items(self.idtransferencia)
            self._descontar_stock(self.idtransferencia)            
            self._actualizar_pedidos()                

    def OnGuardatransButton(self, event):
        if not self._verificar_stock():
            return

        try:
            consultasBD.begin()
            self.__guardar()
            consultasBD.commit()
            sincronizar_tabla.syncServerTables(self, ["transferencias", "transferenciastieneproductos", "stock", "pedidos"])
            utiles.mensaje(self, "La transferencia se guardo y transmitio correctamente")
            self.imprimir() #imprime la transferencia
            self.Close()      
        except sincronizar_tabla.SyncError:
            utiles.mensaje(self, "La transferencia se guardo \n pero no termino de transmitirse por favor realize un sincronizacion")    
        except Exception, e:
            print e.__str__()
            utiles.mensaje(self, "NO se pudo guardar la transferencia")    
            consultasBD.rollback()          
        
    def OnBuscartransaccionButton(self, event):
        if self.empezoacargar == 1:
            ventana = DeseaSalir.Dialog1(self)
            try:
                ventana.ShowModal()
                if self.sale == 1: #me dijeron que querian salir
                    self.Close()
            finally:
                ventana.Destroy()
                
            return
            

    def OnSalirButton(self, event):
        event.Skip()  

    def imprimir(self):
        fechaTransf = str(self.fechatransferencia.GetValue())[:8]
        fechaTransf = fechaTransf[3:6] + fechaTransf[0:3] + fechaTransf[-2:]
        nroTransf = self.idtransferencia
        sucOrigen = self.innombresucursal.GetValue()
        sucDestino = self.indesnombresuc.GetValue()
        cantidad = self.incantProductos.GetValue()
        transferencia = [fechaTransf, nroTransf, sucOrigen, sucDestino, cantidad]
        nombre_vista = "Listado de transferencias entre sucursales"
        columnas = ['P.T.C.','Codigo Sussan','Descripcion','Talle','Color','Precio','Cantidad']
        alineacion= [1,1,0,0,0,2,2]

        totalFil = self.grid1.GetNumberRows()
        
        matriz = []
        for i in xrange(totalFil):
            linea = []
            if self.grid1.GetCellValue(i,0) == '':
                continue
            linea.append(self.grid1.GetCellValue(i, 0)) #ptc
            SQL = "SELECT codsussan FROM producto_talle_color WHERE id='%s'" % (self.grid1.GetCellValue(i, 0))
            resultado = consultasBD.ordenCrudaDict(SQL)
            if len(resultado) != 0:
                codsussan = resultado[0]['codsussan']
            else:
                codsussan = ""
            linea.append(codsussan) #cod sussan
            linea.append(self.grid1.GetCellValue(i, 1)) #descripcion
            linea.append(self.grid1.GetCellValue(i, 2)) #talle
            color = self.grid1.GetCellValue(i, 3) #color
            SQL = "SELECT nombre FROM colores WHERE idcolor='%s'" % (color)
            resultado = consultasBD.ordenCrudaDict(SQL)
            if len(resultado) != 0:
                color += " / " + resultado[0]['nombre']
            linea.append(color) 
            linea.append(self.grid1.GetCellValue(i, 5)) #precio
            linea.append(self.grid1.GetCellValue(i, 4)) #cantidad
            matriz.append(linea)
                
        dlg = Vista.Vista(self, nombre_vista)
        dlg.reporte_html(matriz,columnas,alineacion,transferencia)

##        nombre_vista = 'Imprime Transferencia'
##        print nombre_vista
##        columnas = consultasBD.getColumnasVista(nombre_vista)
##        columnas_bd = consultasBD.getColumnasBD(nombre_vista)
##        
##        consulta = "SELECT %s FROM transferencias a, transferenciastieneproductos b, producto_talle_color c, productos p \
##                         WHERE b.idtransferencia=a.id AND c.id=b.ptc AND b.idtransferencia='%s' AND p.codsussan=c.codsussan ;\
##                         " % (columnas_bd,self.idtransferencia)
##
##        resultado = consultasBD.ordenCruda(consulta)
##        dlg = Vista.Vista(self, nombre_vista)
##        dlg.cargar_celdas(resultado, columnas)
##        try:
##            dlg.ShowModal()
##        finally:
##            dlg.Destroy()
